/**
 * Create in 2012-3-3.
 */
package com.surekam.mnai.util;

/**
 * 对象工具类。
 * 
 * @author 吴政
 * 
 */
public abstract class ObjectUtil {

	/**
	 * 字符串对象工具类。
	 * 
	 * @author 吴政
	 * 
	 */
	public static abstract class String {
		/**
		 * 判断传入的多个字符串是否都为空。
		 * 
		 * @param strings
		 *            多个字符串
		 * @return 如果都为空，则返回true，否则返回false。
		 */
		public static boolean isAllEmpty(java.lang.String... strings) {
			for (java.lang.String s : strings) {
				if (!StringUtil.isEmpty(s)) {
					return false;
				}
			}

			return true;
		}

		/**
		 * 判断传入的多个字符串是否都非空。
		 * 
		 * @param strings
		 *            多个字符串
		 * @return 如果都非空，则返回true，否则返回false。
		 */
		public static boolean isAllNotEmpty(java.lang.String... strings) {
			return !hasEmpty(strings);
		}

		/**
		 * 判断传入的多个字符串中是否存在空字符串。
		 * 
		 * @param strings
		 *            多个字符串
		 * @return 如果存在空字符串，则返回true，否则返回false。
		 */
		public static boolean hasEmpty(java.lang.String... strings) {
			for (java.lang.String s : strings) {
				if (StringUtil.isEmpty(s)) {
					return true;
				}
			}

			return false;
		}

		/**
		 * 如果指定的字符串是以指定后缀结尾，则移除该后缀。
		 * 
		 * @param str
		 *            字符串
		 * @param suffix
		 *            后缀
		 * @return 如果字符串是以指定后缀结果，则返回移除后缀后的字符串，否则返回原字符串。
		 */
		public static java.lang.String eraseEndsWith(java.lang.String str,
				java.lang.String suffix) {
			if (str.endsWith(suffix)) {
				return str.substring(0, str.length() - suffix.length());
			} else {
				return str;
			}
		}
	}

	/**
	 * 判断传入的多个对象是否都为null。
	 * 
	 * @param objects
	 *            多个对象
	 * @return 如果都为null，则返回true，否则返回false。
	 */
	public static boolean isAllNull(Object... objects) {
		for (Object obj : objects) {
			if (obj != null) {
				return false;
			}
		}

		return true;
	}

	/**
	 * 判断传入的多个对象是否都非null。
	 * 
	 * @param objects
	 *            多个对象
	 * @return 如果都非null，则返回true，否则返回false。
	 */
	public static boolean isAllNotNull(Object... objects) {
		return !hasNull(objects);
	}

	/**
	 * 判断传入的多个对象中是否存在null对象。
	 * 
	 * @param objects
	 *            多个对象
	 * @return 如果存在null对象，则返回true，否则返回false。
	 */
	public static boolean hasNull(Object... objects) {
		for (Object obj : objects) {
			if (obj == null) {
				return true;
			}
		}

		return false;
	}
}
